import path = require("path");
import DateUtil from "../engine/utils/DateUtil";
import { FileUtil } from "../engine/utils/FileUtil";
import { Logger } from "../engine/utils/Logger";
import { HttpHelper } from "./HttpHelper";

export class BaseDataHelper extends HttpHelper {


    // {
    //     "request_id":"986eccc4ee1711ec98e29f9efcfa810f",
    //     "code":0,
    //     "msg":"",
    //     "data":{
    //         "fields":[
    //             "ts_code",
    //             "symbol",
    //             "name",
    //             "area",
    //             "industry",
    //             "market",
    //             "list_date"
    //         ],
    //         "items":[
    //             [
    //                 "000001.SZ",        
    //                 "000001",
    //                 "平安银行",
    //                 "深圳",
    //                 "银行",
    //                 "主板",
    //                 "19910403"
    //             ],
    //             [
    //                 "000002.SZ",          TS代码
    //                 "000002",            股票代码
    //                 "万科A",             股票名称
    //                 "深圳",                  地域
    //                 "全国地产",          所属行业
    //                 "主板",              市场类型（主板/创业板/科创板/CDR）
    //                 "19910129"               上市日期
    //             ],
    //         ]
    //     }
    // }
    /**
     * 股票列表
     */
    public static stock_basic() {
        let params: object = {
            "token": this.token,
            "api_name": "stock_basic",
            "params": {
                "list_status": "L",
                // "ts_code":"000001.SZ"
            },
            "fields": ""             //字段列表，用于接口获取指定的字段，以逗号分隔，如"open,high,low,close"
        }
        this.sendHttpRequest(params, this.url, (response, body) => {
            // Logger.log("body==", body)
            let bodyObj: object = JSON.parse(body);
            let code: number = bodyObj["code"]
            if (code == 0) {
                let data: object = bodyObj["data"]
                let fields: object = data["fields"]
                let items: Array<Array<string>> = data["items"]
                // Logger.log("data==",data)
                let newItems: Array<string> = []
                for (let i = 0; i < items.length; i++) {
                    newItems.push(items[i][0])
                }
                let stock_back_path: string = path.resolve() + "/config/stock_base.json";
                Logger.log("股票个数=", newItems.length)
                FileUtil.instance.write_json(JSON.stringify(newItems), stock_back_path)
            } else {
                Logger.warn("stock_basic warn==", bodyObj["code"], bodyObj["msg"])
            }
        });
    }

    // {
    //     "request_id":"482632caee1c11ecb326a19c40191504",
    //     "code":0,
    //     "msg":"",
    //     "data":{
    //         "fields":[
    //             "ts_code",
    //             "exchange",
    //             "chairman",
    //             "manager",
    //             "secretary",
    //             "reg_capital",
    //             "setup_date",
    //             "province",
    //             "city",
    //             "website",
    //             "email",
    //             "employees"
    //         ],
    //         "items":[
    //             [
    //                 "300122.SZ",             股票代码
    //                 "SZSE",              	交易所代码 ，SSE上交所 SZSE深交所
    //                 "蒋仁生",                    法人代表
    //                 "蒋仁生",                总经理
    //                 "秦菲",                  董秘
    //                 160000,                  注册资本
    //                 "19950720",              注册日期
    //                 "重庆",                  所在省份
    //                 "重庆市",                所在城市
    //                 "www.zhifeishengwu.com",             公司主页
    //                 "IRM@zhifeishengwu.com;office1@zhifeishengwu.com",           电子邮件
    //                 4800                     员工人数
    //             ]
    //         ],
    //         "has_more":false
    //     }
    // }
    /**
     * 上市公司基本信息
     * @param ts_code  股票代码
     */
    public static stock_company(ts_code: string = "300122.SZ") {
        let params: object = {
            "token": this.token,
            "api_name": "stock_company",
            "params": {
                "ts_code": ts_code,
            },
            "fields": ""             //字段列表，用于接口获取指定的字段，以逗号分隔，如"open,high,low,close"
        }
        this.sendHttpRequest(params, this.url, (response, body) => {
            Logger.log("body==", body)
            let bodyObj: object = JSON.parse(body);
            let code: number = bodyObj["code"]
            if (code == 0) {
                // let data:object = bodyObj["data"]
                // let fields:object = bodyObj["fields"]
                // let items:Array<object> = bodyObj["items"]
                // Logger.log("stock_basic=", data)
            } else {
                Logger.warn("stock_basic warn==", bodyObj["code"], bodyObj["msg"])
            }
        });
    }

    // {
    //     "request_id":"7c734a08ee1d11eca13b514c55da9544",
    //     "code":0,
    //     "msg":"",
    //     "data":{
    //         "fields":[
    //             "ts_code",
    //             "sub_code",
    //             "name",
    //             "ipo_date",
    //             "issue_date",
    //             "amount",
    //             "market_amount",
    //             "price",
    //             "pe",
    //             "limit_amount",
    //             "funds",
    //             "ballot"
    //         ],
    //         "items":[
    //             [    
    //                 "301239.SZ",         TS股票代码
    //                 "301239",            申购代码
    //                 "普瑞眼科",          名称
    //                 "20220620",          上网发行日期
    //                 "",                  上市日期
    //                 3740,                发行总量（万股）
    //                 1066,                上网发行总量（万股）
    //                 33.65,               发行价格
    //                 58.77,           市盈率
    //                 1.05,                个人申购上限（万股）
    //                 12.587,              募集资金（亿元）
    //                 0                	中签率
    //             ]
    //         ],
    //         "has_more":false
    //     }
    // }
    /**
       * IPO新股列表
       */
    public static new_share(start_date: string = DateUtil.formatDateStr4(DateUtil.now()), end_date: string = DateUtil.formatDateStr4(DateUtil.now())) {
        let params: object = {
            "token": this.token,
            "api_name": "new_share",
            "params": {
                "start_date": start_date,
                "end_date": end_date,
            },
            "fields": ""             //字段列表，用于接口获取指定的字段，以逗号分隔，如"open,high,low,close"
        }
        this.sendHttpRequest(params, this.url, (response, body) => {
            Logger.log("body==", body)
            let bodyObj: object = JSON.parse(body);
            let code: number = bodyObj["code"]
            if (code == 0) {
                // let data:object = bodyObj["data"]
                // let fields:object = bodyObj["fields"]
                // let items:Array<object> = bodyObj["items"]
                // Logger.log("stock_basic=", data)
            } else {
                Logger.warn("new_share warn==", bodyObj["code"], bodyObj["msg"])
            }
        });
    }


}